fix connection cleanup#1474
Conversation
There was a problem hiding this comment.
Pull request overview
修复连接清理流程:为各 MessageConnect 实现新增可选的 ignoreAlreadyDisconnected 参数,使得在另一端已经断开的情况下重复 disconnect() 不会抛错;并对 service worker 中 GM_xmlhttpRequest 的早期错误路径以及 ExtensionMessage.onConnect 端口捕获逻辑做了小幅重构以更安全地释放引用。
Changes:
- 在
MessageConnect.disconnect接口及其ExtensionMessageConnect/WindowMessageConnect/MockMessageConnect实现中新增ignoreAlreadyDisconnected选项。 - 内容侧
GM_xmlhttpRequest清理函数改为connect?.disconnect(true),避免在服务端先断开时抛错。 - service worker 中
throwErrorFn改为捕获非空conn并使用本地myConn释放;ExtensionMessage.onConnect使用myPort局部变量避免port!断言。 MockMessageConnect在已断开状态下对sendMessage/onMessage/onDisconnect抛出明确错误。
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| packages/message/types.ts | MessageConnect.disconnect 接口新增可选参数 ignoreAlreadyDisconnected |
| packages/message/window_message.ts | WindowMessageConnect.disconnect 支持忽略已断开状态 |
| packages/message/extension_message.ts | 重构 onConnect 中 port 捕获,cleanup 改用闭包内 this.con,disconnect 增加忽略参数 |
| packages/message/mock_message.ts | MockMessageConnect 支持已断开状态的安全访问,disconnect 增加忽略参数 |
| src/app/service/content/gm_api/gm_xhr.ts | 清理函数改用 connect?.disconnect(true) 以容忍服务端先断开 |
| src/app/service/service_worker/gm_api/gm_api.ts | 重构 throwErrorFn:参数改为非空,用本地 myConn 释放连接引用 |
Code Review整体是一个正确且有价值的修复。核心收益:修了一个真实的旧崩溃——旧 下面是审查发现,按严重度排序。 1. (主要)
|
|
fixed in 773b087 可以合并 |

Checklist / 检查清单
Description / 描述
Screenshots / 截图